<?php
// +-----------------------------------------------------------------------+
// |                                                                       |
// | WebFormsQA     (Question - Answer)                                    |
// | Copyright  (C) 2010                                                   |
// | Official site  www.scale-tech.ru                                      |
// | email          scale-tech@mail.ru                                     |
// | autor          Alexander Demachev                                     |
// |                                                                       |
// | This program is free software; you can redistribute it and/or modify  |
// | it under the terms of the GNU General Public License as published by  |
// | the Free Software Foundation; version 2 of the License.               |
// |                                                                       |
// | This program is distributed in the hope that it will be useful,       |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of        |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |
// | GNU General Public License for more details.                          |
// +-----------------------------------------------------------------------+

require_once(INCLUDES_DIR.'auth.class.php');

/*!
 * @page EntrancePagePage Исходный код класса EntrancePage
 * @include entrance_page.class.php
 */

/*! @addtogroup ClassWebFormsQA Основные классы проекта
 *  Группа включает основные классы используемые в проекте WebFormsQA
 *  @{
 */


/**
 * @class EntrancePage
 * @brief страница авторизации пользователя \n
 * @ref EntrancePagePage 
 */
class EntrancePage extends Page {

    /**
     *  конструктор.
     *  @param object &$smarty_obj   - ссылка на обьект шаблона
     *  @param array  $attr          - массив атрибутов в формате attr["name"] = name_type;
     *  @param string $name_template - название шаблона
     */
    function EntrancePage(&$smarty_obj, $attr, $name_template)
    {
        parent::Page(&$smarty_obj, $attr, $name_template);
    }

    /** 
     * @brief обновить данные страницы
     * 
     *          состояния страницы
     * - 0 - начальное состояние
     * - 1 - пользователь идентифицирован
     * - 2 - выход
     * - 3 - введен неправильный пароль
     * 
     * @return bool результат операции
     */
    function update()
    {
        // обновляем атрибуты страницы и их значения
        // и главный шаблон Smarty
        if( $flag_result = parent::update() ) {

            $state = 0;
            // признак отображения кнопки выход
            $display_exit = false;
            $base = &$GLOBALS["base"];
            // название заголовка таблицы
            $title_table = "Заголовок таблицы";
            // стиль заголовка таблицы
            $font_class  = "person";
            // название скрытого поля форма. атрибут переключения на страницу
            $name_hidden_form = "entrance_page";

            if (isset($_SESSION["id_user"])) {

            	$state = 1;
                $display_exit = true;
                if ($this->attr["exit"]["set"]) {
                	AuthCommon::unsetAuthSessionInfo();
	                $this->Smarty->assign("display_entrance", true);
                    
                    $state = 2;
                    $display_exit = false;
                }
            }
            
            if ($this->attr["first"]["set"] && $this->attr["second"]["set"]) {
            	$state = 3;
                $first  = $this->attr["first"]["value"];
                $second = $this->attr["second"]["value"];

                $id = $base->searchNameInTable(USERS_TABLE, "login", $first);
                if ($id) {
                    $q = $base->db_query(
                    	"SELECT pass, login, admin, email FROM ".
                        USERS_TABLE.
                        " WHERE ID='$id' LIMIT 1 "
                    ) or die( $base->db_error() );
                    
                    
                    if ($row = $base->db_fetch_row($q)) {
                        $pass = $row[0];
                        // в базе хранится не пароль, а его hash
                        if( !strcmp($pass, md5($second)) ) {
                            // пользователь идентифицирован
                            $state = 1;
                            $display_exit = true;
                            
                            // сохраняю данные авторизации
	                        AuthCommon::addAuthSessionInfo($id, $row[1], $row[2], $row[3]);
	                        
	                        $str_admin = STATEMENT_NO;
	                        if( $row[2] ) $str_admin = STATEMENT_YES; 
	                         
	                        
				            // обратная связь для заполнения полей
            				$reg_userinfo = array($row[1], $row[3], "", $str_admin);
	                        $this->Smarty->assign("reg_userinfo", $reg_userinfo);
                        }
                    }
                }
            }

// echo "entrance<br>";
// echo "state=$state <br>";        	
// echo "entrance<br>";


            
            $this->Smarty->assign("dispay_entrance", false);
            $this->Smarty->assign("name_hidden_form", $name_hidden_form);
            $this->Smarty->assign("font_class", $font_class);
            $this->Smarty->assign("title_table", $title_table);
            // признак отображения кнопки выход
            $this->Smarty->assign("display_exit", $display_exit);

            $this->Smarty->assign("state", $state);
        }
        
        return $flag_result;

    } // end update()



}  // finish class EntrancePage

/*! @} */

?>
